package com.zy.service;

import com.zy.bean.bo.version.VersionUpdateBo;
import com.zy.bean.po.VersionList;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.bean.vo.VersionVo;

import java.util.List;

/**
 * @author hanhuafeng
 * @createDate 2023-05-31 15:37:37
 * @description 项目版本列表
 */
public interface VersionListService extends IService<VersionList> {
    /**
     * 创建一个版本号
     *
     * @param versionName 版本名称
     * @param projectCode 项目code
     * @param initParam   规则初始化参数
     * @return 版本号
     */
    String createVersion(String versionName, String projectCode, String initParam);

    /**
     * 创建版本号
     *
     * @param versionName 版本名称
     * @param desc        版本描述
     * @param chartCode   项目code
     * @param initParam   规则初始化参数
     * @return 版本号
     */
    String createVersion(String versionName, String desc, String chartCode, String initParam);

    /**
     * 根据版本号获取版本信息
     *
     * @param versionCode 版本号
     * @return VersionVo 版本信息
     */
    VersionVo getVersionByCode(String versionCode);

    /**
     * 根据项目code获取版本列表
     *
     * @param chartCode 项目code
     * @return List<VersionVo> 版本列表
     */
    List<VersionVo> getVersionListByProjectCode(String chartCode);

    /**
     * 根据项目code删除版本列表
     *
     * @param chartCodeList 流程图code
     */
    void deleteVersionByChartCode(List<String> chartCodeList);

    /**
     * 更新版本信息
     *
     * @param versionCode     版本号
     * @param versionUpdateBo 版本更新bo
     */
    void updateVersion(String versionCode, VersionUpdateBo versionUpdateBo);

    /**
     * 根据流程图code获取最新版本号
     *
     * @param chartCode 流程图code
     * @return 最新版本号
     */
    String getLatestVersionNum(String chartCode);

    /**
     * 根据版本唯一编号获取版本信息
     *
     * @param versionCode 版本唯一编号
     * @return 版本信息
     */
    VersionList getVersionInfoByCode(String versionCode);
}
